Markdown 插件工具
Teek 提供了 Markdown 插件工具,用于快速开发 Markdown 容器。
简单容器
创建简单容器:
ts
import { createContainerThenUse } from "vitepress-theme-teek";
import MarkdownIt from "markdown-it";
// 创建 markdown it 实例
const md = MarkdownIt({ html: true, linkify: true });
const containerInfo = createContainerThenUse(md, {
type: "center",
useTitle: false,
className: `tk-center-container`,
});
ts
import { createContainerThenGet } from "vitepress-theme-teek";
import MarkdownIt from "markdown-it";
// 创建 markdown it 实例
const md = MarkdownIt({ html: true, linkify: true });
const containerInfo = createContainersThenUse(md, {
type: "center",
useTitle: false,
className: `tk-center-container`,
});
md.use(containerInfo);
一次性创建多个简单容器:
ts
import { createContainersThenUse } from "vitepress-theme-teek";
const markdownContainer = [
{ type: "center", useTitle: false, className: `tk-center-container` },
{ type: "right", useTitle: false, className: `tk-right-container` },
{ type: "note", useTitle: true, defaultTitle: containerLabel?.noteLabel || "NOTE", className: `custom-block` },
];
createContainersThenUse(md, markdownContainer);
ts
import { createContainersThenGet } from "vitepress-theme-teek";
const markdownContainer = [
{ type: "center", useTitle: false, className: `tk-center-container` },
{ type: "right", useTitle: false, className: `tk-right-container` },
{ type: "note", useTitle: true, defaultTitle: containerLabel?.noteLabel || "NOTE", className: `custom-block` },
];
const containerInfo = createContainersThenGet(md, markdownContainer);
md.use(...containerInfo);
卡片容器
创建卡片容器。
ts
import { createCardContainer } from "vitepress-theme-teek";
import MarkdownIt from "markdown-it";
interface DemoCardItem {
/**
* 名称
*/
name: string;
/**
* 描述
*/
desc?: string;
}
interface DemoCardConfig {
/**
* 卡片数量
*/
cardNum: number;
}
// 创建 markdown it 实例
const md = MarkdownIt({ html: true, linkify: true });
createCardContainer<DemoCardItem, DemoCardConfig>(md, {
type: "demoCard",
className: `demo-card-container`,
htmlRender: (props, info) => renderImgCard(props, info),
});
const renderDemoCard = (demoCard: { data: DemoCardItem[]; config?: DemoCardConfig }, info: string) => {
const { data = [], config = {} } = demoCard;
if (!data.length) return "";
const { cardNum = 2 } = config;
return `
<div class="demo-card index-${cardNum}">
${data.map(card => `<p class="title">${info}</p> <p class="name">${card.name}</p>`).join("")}
</div>
`;
};
一次性创建多个卡片容器:
ts
import { createCardContainers } from "vitepress-theme-teek";
import MarkdownIt from "markdown-it";
// 创建 markdown it 实例
const md = MarkdownIt({ html: true, linkify: true });
createCardContainers(md, [{}, {}]);